package args

import (
	"os"
	"path"
	"zinx/utils/commandline/uflag"
)

type args struct {
	ExeAbsDir  string // 当前程序执行目录的绝对路径
	ExeName    string // 当前程序名称
	ConfigFile string // 配置文件路径
}

var (
	Args   = args{}
	isInit = false
)

func init() {
	exe := os.Args[0]
	pwd, err := os.Getwd()
	if err != nil {
		panic(err)
	}

	Args.ExeAbsDir = pwd          // 初始化当前程序执行目录绝对路径
	Args.ExeName = path.Base(exe) // 当前程序名称
}

func InitConfigFlag(defaultValue string, tips string) {
	if isInit {
		return
	}
	isInit = true
	uflag.StringVar(&Args.ConfigFile, "c", defaultValue, tips) // 初始化配置文件路径，用·c·指定
	return
}

/**
 * fn 如果配置文件不是绝对路径，将其转化为绝对路径
 */
func FLagHandle() {
	if !path.IsAbs(Args.ConfigFile) {
		Args.ConfigFile = path.Join(Args.ExeAbsDir, Args.ConfigFile)
	}
}
